#ifndef SKYID_WINDOW_H 
#define SKYID_WINDOW_H

#include "common.h"
#include "object.h"
#include "config.h"

#include "window_event.h"

namespace SkyID 
{

//- Event callbacks -----------------------------------------------------------

typedef void (*KeyboardCallback)(const KeyboardEvent&);
typedef void (*MouseMotionCallback)(const MouseMotionEvent&);
typedef void (*MouseButtonCallback)(const MouseButtonEvent&);

//- Window --------------------------------------------------------------------

namespace Window
{

bool initialize(const Config &config);
void shutdown();

bool processEvents();
void swapBuffers();

uint32 getWidth();
uint32 getHeight();

uint32 getTicks();
bool getKeyState(KeyCode key);

void quit();

void setKeyboardCallback(KeyboardCallback callback);
void setMouseMotionCallback(MouseMotionCallback callback);
void setMouseButtonCallback(MouseButtonCallback callback);

} // namespace Window

} // namespace SkyID

#endif // SKYID_WINDOW_H
